#!/usr/bin/env bash

set -e

listFile=shell_test_list.json

case $1 in
	"store")
		in=$(< /dev/stdin)
		server=$(echo "$in" | jq --raw-output ".ServerURL")
		serverHash=$(echo "$server" | sha1sum - | awk '{print $1}')

		username=$(echo "$in" | jq --raw-output ".Username")
		password=$(echo "$in" | jq --raw-output ".Secret")
		echo "{ \"Username\": \"${username}\", \"Secret\": \"${password}\" }" > $TEMP/$serverHash
		# add the server to the list file
		if [[ ! -f $TEMP/$listFile ]]; then
			echo "{ \"${server}\": \"${username}\" }" > $TEMP/$listFile
		else
			list=$(< $TEMP/$listFile)
			echo "$list" | jq ". + {\"${server}\": \"${username}\"}" > $TEMP/$listFile
		fi
		;;
	"get")
		in=$(< /dev/stdin)
		serverHash=$(echo "$in" | sha1sum - | awk '{print $1}')
		if [[ ! -f $TEMP/$serverHash ]]; then
			echo "credentials not found in native keychain"
			exit 1
		fi
		payload=$(< $TEMP/$serverHash)
		echo "$payload"
		;;
	"erase")
		in=$(< /dev/stdin)
		serverHash=$(echo "$in" | sha1sum - | awk '{print $1}')
		rm -f $TEMP/$serverHash

		# Remove the server from the list
		list=$(< $TEMP/$listFile)
		echo "$list" | jq "del(.[\"${in}\"])" > $TEMP/$listFile
		;;
	"list")
		if [[ ! -f $TEMP/$listFile ]]; then
			echo "{}"
		else
			payload=$(< $TEMP/$listFile)
			echo "$payload"
		fi
		;;
	*)
		echo "unknown credential option"
		exit 1
		;;
esac
